
// 1 keyof 关键词  keyof T 获取T的对象的key值
type r = keyof string; // keyof获取对象的key值
function aa<T extends object, K extends  keyof T > (obj: T, key: K):K { 
  //<a,b> a和b描述的对应形参传递参数是的时候应该校验。实参中不能传递没有定义的类型 
  return key;

}
const obj ={'a':'aaaa'}
const cc = aa(obj,'a');
type a = keyof any;  // string, number, symbol,对象中的键名只能为这三种类型，因此keyof any的值就为这个三个值的并集合
// type 关键字


// extends 关键字是 x extends b  传递的参数x必须满足于b,



// 断言 as
let str: string = '';
str as n